1
Введение в агентов решения задач
PolyU COMP5511Lecture 2
00:00

От рефлексов к планированию

В эволюции проектирования агентов мы переходим от рефлекторных агентов, которые сопоставляют восприятия непосредственно с действиями на основе простых правил (например, «Если впереди идущий автомобиль тормозит, инициируй торможение»), к агентам решения задач. Рефлекторные агенты действуют на основе текущего контекста, тогда как агенты решения задач являются целеориентированными. Они учитывают будущие последствия своих действий, чтобы найти последовательность, удовлетворяющую конкретной цели.

  • Рефлекторный агент: $Action = Function(Percept)$
  • Планирующий агент: $Action\_Sequence = Search(State, Goal)$

Атомарное представление состояния

На этом фундаментальном уровне агенты используют атомарное представление. Это означает, что состояние мира рассматривается как чёрный ящик — единый узел без внутренней структуры, видимой алгоритму поиска. Агент рассуждает только о:

  • Состояния ($S$): Снимки окружающей среды.
  • Действия ($A$): Переходы между состояниями.
  • Проверка цели: Булева проверка, находится ли состояние $s \in S_{goal}$.

Цикл решения задач

Агент решения задач следует чёткому четырёхэтапному циклу для навигации в окружающей среде:

  1. Формулирование цели: Определение, какую цель преследовать на основе текущей ситуации.
  2. Формулирование задачи: Абстрагирование реального мира в математическую модель (состояния и действия).
  3. Поиск: Моделирование последовательностей действий для поиска оптимального пути.
  4. Выполнение: Выполнение действий, найденных на этапе поиска, без дальнейших размышлений (при условии статичной среды).
Реализация на Python (agent_types.py)
1
class ReflexAgent:
2
defact(self, percept):
3
# Direct mapping: Rule -> Action
4
return rules.get(percept, default_action)
5
6
class ProblemSolvingAgent:
7
def__init__(self):
8
self.seq = [] # Buffered action sequence
9
10
defact(self, percept):
11
# If we are mid-execution, continue
12
ifself.seq:
13
returnself.seq.pop(0)
14
15
# Otherwise, Plan (Search)
16
state = self.update_state(percept)
17
goal = self.formulate_goal(state)
18
problem = self.formulate_problem(state, goal)
19
20
# Search returns a list of actions
21
self.seq = search_algorithm(problem)
22
23
returnself.seq.pop(0)